/**
 * 系统配置实体类 - 系统级配置参数的存储和管理实体
 *
 * 开发人员：徐少洋
 * 开发时间：2025-10-20 至 2025-10-25
 * 模块职责：定义系统配置的基本信息和业务属性，支持系统级配置参数的存储和管理
 *
 * 技术要点：
 * - 配置键值对设计，支持灵活的配置存储
 * - 敏感信息标识和安全处理
 * - 配置描述和元数据管理
 * - 审计字段自动维护配置变更时间
 * - 唯一性约束确保配置键唯一
 *
 * 开发故事：负责系统配置实体的数据模型设计，与配置管理服务深度配合，实现系统配置的统一管理和动态更新能力。
 */
package com.pbl.entity;

import lombok.*;

import javax.persistence.*;
import java.time.LocalDateTime;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "system_config")
public class SystemConfig {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "config_key", nullable = false, length = 64, unique = true)
    private String configKey;

    @Column(name = "config_value", length = 512)
    private String configValue;

    @Column(length = 255)
    private String description;

    @Column(name = "is_secret", nullable = false)
    private Integer isSecret;

    @Column(name = "created_at", insertable = false, updatable = false)
    private LocalDateTime createdAt;

    @Column(name = "updated_at", insertable = false, updatable = false)
    private LocalDateTime updatedAt;
}
